#ifndef _STRING_H_
#define _STRING_H_

/*
    等价于如下伪代码
    %di = s;
    %ecx = 0xffffffff;
    %eax = 0;            # 相当于结束字符\0
    do {
        %ecx--;
        if (*(%di) == %al) {
            break;
        }
        %di++
    } while (%ecx > 0)
    __res = 0 - %ecx
    __res -= 1
    return __res;

    改写成C语言见函数 init/main.c 的 strlen_2
*/
static inline int strlen(const char * s) /* extern 修改为了 static */
{
register int __res __asm__("ecx");
__asm__("cld\n\t"
	"repne\n\t"
	"scasb\n\t"
	"notl %0\n\t"
	"decl %0"
	:"=c" (__res):"D" (s),"a" (0),"c" (0xffffffff):);
return __res;
}



#endif /* _STRING_H_ */